package telas.componentes;

import business.sistema.IObjetoSistema;
import business.util.MonetarioDocument;
import java.awt.Color;
import java.awt.Dimension;
import java.lang.reflect.Method;
import java.text.DecimalFormat;

public class CampoNumeroDecimal extends CampoEditavel 
{
	private static final long serialVersionUID = 1L;
	private boolean habilitaNegativo = true;

	public CampoNumeroDecimal()
	{
		super();
		initialize();
	}
	
	/**
	 * This method initializes this
	 * 
	 */
	private void initialize() 
	{
        this.setSize(new Dimension(131, 23));
        this.setDocument(new MonetarioDocument());
        
	}
	
	@Override
	public void update(IObjetoSistema objeto, String mensagem) throws Exception
	{		
		if(objeto != null)
		{
			Class<?> objClasse = objeto.getClass();			
			
			Method metodo = objClasse.getMethod("get" + getAtributoObservado());
			setText(String.valueOf(metodo.invoke(objeto)));
		}
	}
	
	public boolean isHabilitaNegativo() 
	{
		return habilitaNegativo;
	}

	public void setHabilitaNegativo(boolean habilitaNegativo) 
	{
		this.habilitaNegativo = habilitaNegativo;
	}
	
	@Override
	public void setText(String arg0) 
	{		
		if(arg0 != null && !arg0.isEmpty())
		{
			DecimalFormat formato = new DecimalFormat("0.00");
			String numero = formato.format(Double.parseDouble(arg0)); 
			
			numero = numero.replace(',', '.');
			
			super.setText(numero);
			
			double valor = Double.parseDouble(numero);			
			
			if(valor < 0)
			{
				this.setForeground(Color.red);
			}
			else
			{
				this.setForeground(Color.black);
			}
		}
	}
} 
